<?php
/**
 * Author:   tangxiaowen
 * Email:    846506584@qq.com
 * Date:     2019/3/25 0025
 * Describe: 系统 - 对接配置管理类
 */

namespace app\common\controller\system;

use think\Controller;
use think\Request;
use think\Log;

class Docking extends Controller
{
    public function __construct()
    {
        parent::__construct();

        //日志初始化保存地址
        $requestName = Request::instance()->module();
        $controllerName = Request::instance()->controller();
        $setPath = strtolower("{$requestName}/{$controllerName}/");
        Log::init(['path'=>LOG_PATH.$setPath,'type'  => 'file',]);

    }

    /**
     * 根据对接配置英文名称获取对接信息
     * @param string $eName 对接产品英文名称
     * @return array
     */
    public function getSystemInfo($eName)
    {
        $eNameInfo = cache($eName);
        if(!$eNameInfo){
            $eNameInfo = db('sys_integrate')->where(['EName' => $eName])->find();
            cache('eNameInfo',$eNameInfo,1);
        }
        return $eNameInfo;
    }

    /**
     * 添加第三方请求记录
     * @param integer $Type 类型 1短信 2身份认证 3手机认证 4磨盘风控 5滴滴风控
     * @param integer $Result 请求结果 1请求中 2成功 3失败 4失去连接
     * @param string $eName 第三方配置英文名称
     * @param string $memo 描述
     * @param bool $isUpdate 是否更新
     * @param int $isNew 新老用户 1新 2老
     * @param int $id 主键ID
     * @param string $sourceData 第三方返回结果
     * @return bool
     */
    public function addDocking($Type,$Result = 1,$eName,$memo = '',$sourceData = '',$isNew = 1,$id = '',$isUpdate = false){

        //根据对接配置英文名称获取其单价价格
        $Price = $this->getSystemInfo($eName);
        $temp = [
            'Type'   => $Type,
            'Result' => $Result,
            'Price'  => $Price['Price'],
            'Memo'   => $memo,
            'IsNew'  => $isNew,
            'SourceData' => $sourceData,
        ];

        $result = false;
        if($isUpdate){
            $temp['ID'] = $id;
            $temp['UpdateTime'] = date('Y-m-d H:i:s',time());
            $result = db('docking_log')->update($temp);
        }else{
            $temp['CreateTime'] = date('Y-m-d H:i:s',time());
            $result = db('docking_log')->insertGetId($temp);
        }

        if(!$result){
            //写入错误日志
            \Think\Log::record('添加/更新第三方请求记录失败 数据 - ' . json_encode($temp,JSON_UNESCAPED_UNICODE));
        }

        return $result;
    }


}